# utils/prompt_templates.py
"""提示词模板定义文件"""

# 看板摘要生成提示词模板
BOARD_SUMMARY_TEMPLATE = """
你是一个专业的新闻编辑，请根据以下新闻标题和内容，生成一个简洁明了的看板摘要。

要求：
1. 摘要长度严格控制在{max_length}个字符以内
2. 保留核心信息，去除冗余内容
3. 使用简洁明了的语言
4. 突出新闻的关键要素（如品牌、事件、影响等）
5. 如果内容超出长度限制，使用"{ellipsis_text}"结尾

新闻标题：{title}

新闻内容：{content}

请生成看板摘要：
"""

# 新闻分类提示词模板
NEWS_CATEGORY_TEMPLATE = """
你是一个专业的新闻分析师，请根据以下新闻内容，确定新闻的分类。

新闻分类优先级：
1. 全球汽车市场热点事件（涉及博世、大陆、电装等）
2. 重点客户（涉及华为、XM、LP、XP、Geely、LX等）
3. 其他OEM
4. 竞争对手
5. 产品信息（涉及产品、车型、技术等）
6. 其他

新闻标题：{title}

新闻内容：{content}

涉及品牌：{brands}

请确定该新闻的分类：
"""

# 实体识别提示词模板
ENTITY_EXTRACTION_TEMPLATE = """
你是一个专业的实体识别系统，请从以下文本中识别出所有相关实体。

需要识别的实体类型：
1. 组织机构（ORG）：公司、机构等名称
2. 地点（LOC）：城市、国家、地区等
3. 产品（PRODUCT）：产品名称、型号等
4. 品牌（BRAND）：品牌名称
5. 人物（PERSON）：人名
6. 时间（TIME）：日期、时间等

文本内容：{text}

请以JSON格式返回识别结果，格式如下：
[
  {{"text": "实体文本", "type": "实体类型"}},
  ...
]

只返回JSON数组，不要包含其他内容。
"""

# 新闻评分提示词模板
NEWS_SCORING_TEMPLATE = """
你是一个专业的新闻评分系统，请根据以下新闻内容和相关信息，给出新闻评分。

评分标准：
1. 实体权重（0-30分）：涉及重要品牌或机构加分
2. 时效性（0-20分）：新闻越新分数越高
3. 影响力（0-25分）：新闻影响范围和程度
4. 重要性（0-25分）：新闻对行业的重要性

新闻标题：{title}

新闻内容：{content}

涉及品牌：{brands}

发布时间：{publish_date}

请分析并给出0-100分的评分，只返回数字分数。
"""

# 关键词提取提示词模板
KEYWORD_EXTRACTION_TEMPLATE = """
你是一个专业的关键词提取系统，请从以下新闻内容中提取最重要的关键词。

要求：
1. 提取5-10个最重要的关键词
2. 关键词应该涵盖新闻的核心主题
3. 避免提取停用词和无意义的词
4. 优先提取品牌、产品、技术等专业术语

新闻标题：{title}

新闻内容：{content}

请以JSON数组格式返回关键词列表，只返回JSON数组，不要包含其他内容。
"""

# 新闻主题提取提示词模板
TOPIC_EXTRACTION_TEMPLATE = """
你是一个专业的新闻主题分析系统，请根据以下新闻内容，提取新闻的主要主题。

要求：
1. 提取2-5个主要主题
2. 主题应该准确反映新闻的核心内容
3. 使用简洁的短语描述主题
4. 主题应该具有概括性

新闻标题：{title}

新闻内容：{content}

请以JSON数组格式返回主题列表，只返回JSON数组，不要包含其他内容。
"""

# 默认提示词配置
DEFAULT_PROMPTS = {
    'board_summary': BOARD_SUMMARY_TEMPLATE,
    'news_category': NEWS_CATEGORY_TEMPLATE,
    'entity_extraction': ENTITY_EXTRACTION_TEMPLATE,
    'news_scoring': NEWS_SCORING_TEMPLATE,
    'keyword_extraction': KEYWORD_EXTRACTION_TEMPLATE,
    'topic_extraction': TOPIC_EXTRACTION_TEMPLATE
}
